// 从element-ui组件库导入通知组件,用于发错误通知
import {Notification} from "element-ui";
// 从element-ui组件库导入对话框组件
// 用于session过期时弹出对话框
import {MessageBox} from "element-ui";
// 导入路由器, 用于session过期时, 点击对话框跳路由到登录页面
import router from "@/router";

// 导出一个handleSuccess函数, 入参一个result对象 (可以看作一个三层对象)
export const handleSuccess = (result) => {
    // result.data是后端返回的map
    // 这里取出map中的三个对象 code, message, data
    const { code, message, data } = result.data;
    // 判定后端是不是返回登录已过期
    // 前端用code和10007判定,需要跟后端约定登录已过期的状态码必须是10007
    if (code == 10007) {
        // 弹出一个对话框
        MessageBox.alert(message, '提示', {
            confirmButtonText: '确定',
            callback: action => {
                // 跳转到登录页面
                router.replace('/login')
            }
        })
        return false
    }
    // 唯一代表业务成功的状态码
    if (code == 10000) {
        // 后端返回成功, 且携带了数据, 我们这里返回数据给then方法继续处理
        if (data) {
            return data
        } else {
            Notification({
                type:'success',
                message:'操作成功!'
            })
            return true
        }
    } else {
        // 只要code不是10000, 弹出错误通知
        Notification({
            title:'错误',
            type:'error',
            dangerouslyUseHTMLString:true,
            message:`<strong>错误码:${code}</strong><br/><strong>错误消息:${message}</strong>`
        })
        return false
    }
};

// 导出一个handleError函数, 入参一个error对象
export const handleError = (error) => {
    let message;
    if (error && error.response) {
        switch (error.response.status) {
            case 404:
                message = '404:找不到资源!'
                break
            case 500:
                message = '500:服务器出错!'
                break
            default:
                message = '请求失败,请稍后再试或者联系管理员'
        }
    } else {
        message = '请求失败,请检查网络或者联系管理员'
    }
    Notification({
        title:'错误',
        type:'error',
        dangerouslyUseHTMLString:true,
        message:message
    })
};
